package com.ruoyi.teach.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 教师管理对象 teacher
 * 
 * @author ruoyi
 * @date 2023-11-22
 */
public class Teacher extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 教师ID */
    private Long teacherId;

    /** 姓名 */
    @Excel(name = "姓名", width = 10)
    private String teacherName;

    /** 照片 */
    private String avatar;

    /** 性别 */
    @Excel(name = "性别", readConverterExp = "0=男,1=女,2=未知", width = 10)
    private String gender;

    /** 出生年月 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "出生年月", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date birthDate;

    /** 参加工作时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "参加工作时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date hireDate;

    /** 进入我校时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "进入我校时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date entryDate;

    /** 现任职岗位 */
    @Excel(name = "现任职岗位", width = 20)
    private String currentPosition;

    /** 岗位等级 */
    @Excel(name = "岗位等级", dictType = "position_level", width = 10)
    private String positionLevel;

    /** 政治面貌 */
    @Excel(name = "政治面貌", dictType = "political_status", width = 10)
    private String politicalStatus;

    /** 入党时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "入党时间", dateFormat = "yyyy.MM", width = 10, cellType = Excel.ColumnType.STRING)
    private Date joinPartyDate;

    /** 籍贯 */
    @Excel(name = "籍贯", width = 20)
    private String hometown;

    /** 身份证号码 */
    @Excel(name = "身份证号码", width = 18)
    private String idCard;

    /** 第一学历 */
    @Excel(name = "第一学历", width = 10)
    private String firstDegree;

    /** 第一学历毕业学校 */
    @Excel(name = "第一学历毕业学校", width = 15)
    private String firstDegreeInstitution;

    /** 第一学历毕业时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "第一学历毕业时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date firstDegreeGraduationDate;

    /** 第一学历专业 */
    @Excel(name = "第一学历专业", width = 15)
    private String firstDegreeMajor;

    /** 最高学历 */
    @Excel(name = "最高学历", width = 10)
    private String highestDegree;

    /** 最高学历毕业学校 */
    @Excel(name = "最高学历毕业学校", width = 15)
    private String highestDegreeInstitution;

    /** 最高学历毕业时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "最高学历毕业时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date highestDegreeGraduationDate;

    /** 最高学历专业 */
    @Excel(name = "最高学历专业", width = 15)
    private String highestDegreeMajor;

    /** 是否免费师范生 */
    @Excel(name = "是否免费师范生", dictType = "sys_yes_no", width = 12)
    private String isFreeNormalStudent;

    /** 职称 */
    @Excel(name = "职称", dictType = "professional_title", width = 10)
    private String professionalTitle;

    /** 评审时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "评审时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date professionalReviewDate;

    /** 聘用时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "聘用时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date professionalEmployDate;

    /** 任教科目 */
    @Excel(name = "任教科目", width = 10)
    private String professionalTeachingSubject;

    /** 教师资格种类 */
    @Excel(name = "教师资格种类", width = 10)
    private String teachingQualification;

    /** 教师资格科目 */
    @Excel(name = "教师资格科目", width = 10)
    private String teachingSubject;

    /** 原工作单位 */
    @Excel(name = "原工作单位", width = 15)
    private String transferFromInstitution;

    /** 调配单位 */
    @Excel(name = "调配单位", width = 15)
    private String transferToInstitution;

    /** 调配时间 */
    @JsonFormat(pattern = "yyyy.MM")
    @Excel(name = "调配时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date transferDate;

    /** 批准部门 */
    @Excel(name = "批准部门", width = 15)
    private String transferApprovalDepartment;

    /** 任课年级 */
    @Excel(name = "任课年级", dictType = "teacher_grade", width = 10)
    private String grade;

    /** 任课科目 */
    @Excel(name = "任课科目", width = 10)
    private String subject;

    /** 周工作量 */
    @Excel(name = "周工作量", width = 10)
    private BigDecimal weeklyWorkload;

    /** 其他岗位 */
    @Excel(name = "其他岗位", width = 10)
    private String otherPositions;

    /** 授奖情况 */
    @Excel(name = "授奖情况", type = Excel.Type.EXPORT, width = 10)
    private String awards;

    /** 名称 */
    @Excel(name = "受奖名称", width = 10)
    private String awardName;

    /** 授予部门 */
    @Excel(name = "授予部门", width = 10)
    private String awardDepartment;

    /** 授予时间 */
    @Excel(name = "授予时间", width = 10, dateFormat = "yyyy.MM", cellType = Excel.ColumnType.STRING)
    private Date awardDate;

    /** 电话 */
    @Excel(name = "电话", width = 12)
    private String phone;

    /** 借调 */
    @Excel(name = "借调", dictType = "sys_yes_no", width = 10)
    private String isOnLoan;

    /** 原单位 */
    @Excel(name = "原单位", width = 15)
    private String originalInstitution;

    public void setTeacherId(Long teacherId) 
    {
        this.teacherId = teacherId;
    }

    public Long getTeacherId() 
    {
        return teacherId;
    }
    public void setTeacherName(String teacherName) 
    {
        this.teacherName = teacherName;
    }

    public String getTeacherName() 
    {
        return teacherName;
    }
    public void setAvatar(String avatar) 
    {
        this.avatar = avatar;
    }

    public String getAvatar() 
    {
        return avatar;
    }
    public void setGender(String gender) 
    {
        this.gender = gender;
    }

    public String getGender() 
    {
        return gender;
    }
    public void setBirthDate(Date birthDate) 
    {
        this.birthDate = birthDate;
    }

    public Date getBirthDate() 
    {
        return birthDate;
    }
    public void setPhone(String phone) 
    {
        this.phone = phone;
    }

    public String getPhone() 
    {
        return phone;
    }
    public void setHireDate(Date hireDate) 
    {
        this.hireDate = hireDate;
    }

    public Date getHireDate() 
    {
        return hireDate;
    }
    public void setEntryDate(Date entryDate) 
    {
        this.entryDate = entryDate;
    }

    public Date getEntryDate() 
    {
        return entryDate;
    }
    public void setCurrentPosition(String currentPosition) 
    {
        this.currentPosition = currentPosition;
    }

    public String getCurrentPosition() 
    {
        return currentPosition;
    }
    public void setPositionLevel(String positionLevel) 
    {
        this.positionLevel = positionLevel;
    }

    public String getPositionLevel() 
    {
        return positionLevel;
    }
    public void setPoliticalStatus(String politicalStatus) 
    {
        this.politicalStatus = politicalStatus;
    }

    public String getPoliticalStatus() 
    {
        return politicalStatus;
    }
    public void setJoinPartyDate(Date joinPartyDate) 
    {
        this.joinPartyDate = joinPartyDate;
    }

    public Date getJoinPartyDate() 
    {
        return joinPartyDate;
    }
    public void setHometown(String hometown) 
    {
        this.hometown = hometown;
    }

    public String getHometown() 
    {
        return hometown;
    }
    public void setIdCard(String idCard) 
    {
        this.idCard = idCard;
    }

    public String getIdCard() 
    {
        return idCard;
    }
    public void setFirstDegree(String firstDegree) 
    {
        this.firstDegree = firstDegree;
    }

    public String getFirstDegree() 
    {
        return firstDegree;
    }
    public void setFirstDegreeInstitution(String firstDegreeInstitution) 
    {
        this.firstDegreeInstitution = firstDegreeInstitution;
    }

    public String getFirstDegreeInstitution() 
    {
        return firstDegreeInstitution;
    }
    public void setFirstDegreeGraduationDate(Date firstDegreeGraduationDate) 
    {
        this.firstDegreeGraduationDate = firstDegreeGraduationDate;
    }

    public Date getFirstDegreeGraduationDate() 
    {
        return firstDegreeGraduationDate;
    }
    public void setFirstDegreeMajor(String firstDegreeMajor) 
    {
        this.firstDegreeMajor = firstDegreeMajor;
    }

    public String getFirstDegreeMajor() 
    {
        return firstDegreeMajor;
    }
    public void setHighestDegree(String highestDegree) 
    {
        this.highestDegree = highestDegree;
    }

    public String getHighestDegree() 
    {
        return highestDegree;
    }
    public void setHighestDegreeInstitution(String highestDegreeInstitution) 
    {
        this.highestDegreeInstitution = highestDegreeInstitution;
    }

    public String getHighestDegreeInstitution() 
    {
        return highestDegreeInstitution;
    }
    public void setHighestDegreeGraduationDate(Date highestDegreeGraduationDate) 
    {
        this.highestDegreeGraduationDate = highestDegreeGraduationDate;
    }

    public Date getHighestDegreeGraduationDate() 
    {
        return highestDegreeGraduationDate;
    }
    public void setHighestDegreeMajor(String highestDegreeMajor) 
    {
        this.highestDegreeMajor = highestDegreeMajor;
    }

    public String getHighestDegreeMajor() 
    {
        return highestDegreeMajor;
    }
    public void setIsFreeNormalStudent(String isFreeNormalStudent) 
    {
        this.isFreeNormalStudent = isFreeNormalStudent;
    }

    public String getIsFreeNormalStudent() 
    {
        return isFreeNormalStudent;
    }
    public void setProfessionalTitle(String professionalTitle) 
    {
        this.professionalTitle = professionalTitle;
    }

    public String getProfessionalTitle() 
    {
        return professionalTitle;
    }
    public void setProfessionalReviewDate(Date professionalReviewDate) 
    {
        this.professionalReviewDate = professionalReviewDate;
    }

    public Date getProfessionalReviewDate() 
    {
        return professionalReviewDate;
    }
    public void setProfessionalEmployDate(Date professionalEmployDate) 
    {
        this.professionalEmployDate = professionalEmployDate;
    }

    public Date getProfessionalEmployDate() 
    {
        return professionalEmployDate;
    }
    public void setProfessionalTeachingSubject(String professionalTeachingSubject) 
    {
        this.professionalTeachingSubject = professionalTeachingSubject;
    }

    public String getProfessionalTeachingSubject() 
    {
        return professionalTeachingSubject;
    }
    public void setTeachingQualification(String teachingQualification) 
    {
        this.teachingQualification = teachingQualification;
    }

    public String getTeachingQualification() 
    {
        return teachingQualification;
    }
    public void setTeachingSubject(String teachingSubject) 
    {
        this.teachingSubject = teachingSubject;
    }

    public String getTeachingSubject() 
    {
        return teachingSubject;
    }
    public void setTransferFromInstitution(String transferFromInstitution) 
    {
        this.transferFromInstitution = transferFromInstitution;
    }

    public String getTransferFromInstitution() 
    {
        return transferFromInstitution;
    }
    public void setTransferToInstitution(String transferToInstitution) 
    {
        this.transferToInstitution = transferToInstitution;
    }

    public String getTransferToInstitution() 
    {
        return transferToInstitution;
    }
    public void setTransferDate(Date transferDate) 
    {
        this.transferDate = transferDate;
    }

    public Date getTransferDate() 
    {
        return transferDate;
    }
    public void setTransferApprovalDepartment(String transferApprovalDepartment) 
    {
        this.transferApprovalDepartment = transferApprovalDepartment;
    }

    public String getTransferApprovalDepartment() 
    {
        return transferApprovalDepartment;
    }
    public void setGrade(String grade) 
    {
        this.grade = grade;
    }

    public String getGrade() 
    {
        return grade;
    }
    public void setSubject(String subject) 
    {
        this.subject = subject;
    }

    public String getSubject() 
    {
        return subject;
    }
    public void setWeeklyWorkload(BigDecimal weeklyWorkload) 
    {
        this.weeklyWorkload = weeklyWorkload;
    }

    public BigDecimal getWeeklyWorkload() 
    {
        return weeklyWorkload;
    }
    public void setOtherPositions(String otherPositions) 
    {
        this.otherPositions = otherPositions;
    }

    public String getOtherPositions() 
    {
        return otherPositions;
    }
    public void setAwards(String awards) 
    {
        this.awards = awards;
    }

    public String getAwards() 
    {
        return awards;
    }

    public void setAwardName(String awardName) 
    {
        this.awardName = awardName;
    }

    public String getAwardName() 
    {
        return awardName;
    }

    public void setAwardDepartment(String awardDepartment) 
    {
        this.awardDepartment = awardDepartment;
    }

    public String getAwardDepartment() 
    {
        return awardDepartment;
    }

    public void setAwardDate(Date awardDate)
    {
        this.awardDate = awardDate;
    }

    public Date getAwardDate()
    {
        return awardDate;
    }    
    public void setIsOnLoan(String isOnLoan) 
    {
        this.isOnLoan = isOnLoan;
    }

    public String getIsOnLoan() 
    {
        return isOnLoan;
    }
    public void setOriginalInstitution(String originalInstitution) 
    {
        this.originalInstitution = originalInstitution;
    }

    public String getOriginalInstitution() 
    {
        return originalInstitution;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("teacherId", getTeacherId())
            .append("teacherName", getTeacherName())
            .append("avatar", getAvatar())
            .append("gender", getGender())
            .append("birthDate", getBirthDate())
            .append("phone", getPhone())
            .append("hireDate", getHireDate())
            .append("entryDate", getEntryDate())
            .append("currentPosition", getCurrentPosition())
            .append("positionLevel", getPositionLevel())
            .append("politicalStatus", getPoliticalStatus())
            .append("joinPartyDate", getJoinPartyDate())
            .append("hometown", getHometown())
            .append("idCard", getIdCard())
            .append("firstDegree", getFirstDegree())
            .append("firstDegreeInstitution", getFirstDegreeInstitution())
            .append("firstDegreeGraduationDate", getFirstDegreeGraduationDate())
            .append("firstDegreeMajor", getFirstDegreeMajor())
            .append("highestDegree", getHighestDegree())
            .append("highestDegreeInstitution", getHighestDegreeInstitution())
            .append("highestDegreeGraduationDate", getHighestDegreeGraduationDate())
            .append("highestDegreeMajor", getHighestDegreeMajor())
            .append("isFreeNormalStudent", getIsFreeNormalStudent())
            .append("professionalTitle", getProfessionalTitle())
            .append("professionalReviewDate", getProfessionalReviewDate())
            .append("professionalEmployDate", getProfessionalEmployDate())
            .append("professionalTeachingSubject", getProfessionalTeachingSubject())
            .append("teachingQualification", getTeachingQualification())
            .append("teachingSubject", getTeachingSubject())
            .append("transferFromInstitution", getTransferFromInstitution())
            .append("transferToInstitution", getTransferToInstitution())
            .append("transferDate", getTransferDate())
            .append("transferApprovalDepartment", getTransferApprovalDepartment())
            .append("grade", getGrade())
            .append("subject", getSubject())
            .append("weeklyWorkload", getWeeklyWorkload())
            .append("otherPositions", getOtherPositions())
            .append("awards", getAwards())
            .append("isOnLoan", getIsOnLoan())
            .append("originalInstitution", getOriginalInstitution())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
